﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TemplateEngineWithChart.Docx.TemplateCustomContent;
using TemplateEngineWithChart.Docx;
using System.IO;
using ConsoleApp1.Template1;
using ConsoleApp1.Template2;

namespace TemplateEngineWithChart.Docx.FullExample
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string json = File.ReadAllText("./Template2/data2.json");
            using (DataSet ds = Newtonsoft.Json.JsonConvert.DeserializeObject<DataSet>(json))
            {
                InputTemplate2 inputTemplate = new InputTemplate2();

                // 团体基本信息
                inputTemplate.SetDictOrgInfo(new OrgInfo(ds.Tables["团体基本信息"]));

                //// 人员构成
                inputTemplate.SetStaffComposition(new StaffComposition(ds.Tables["人员构成"]));

                // 团体年龄分布
                inputTemplate.SetAgeMap(new AgeMap(ds.Tables["团体年龄分布"]));

                // 项目参检
                inputTemplate.SetTableExamItem(ds.Tables["项目参检"]);

                // 健康问题分析
                inputTemplate.SetHealthAnalysis(new HealthAnalysis(ds.Tables["健康问题分析"], ds.Tables["合计十大统计"], ds.Tables["男性十大统计"], ds.Tables["女性十大统计"]));

                // 所有员工健康问题
                inputTemplate.SetAllHealthProblem(ds.Tables["合计十大统计"], ds.Tables["健康问题分析_基本信息员工"].AsEnumerable().ToList());

                // 女性员工健康问题
                inputTemplate.SetFemaleHealthProblem(ds.Tables["女性十大统计"], ds.Tables["健康问题分析_基本信息员工"].AsEnumerable().Where(p => p.DataRowToDecimal("SexCode") == 2).ToList());

                // 男性员工健康问题
                inputTemplate.SetMaleHealthProblem(ds.Tables["男性十大统计"], ds.Tables["健康问题分析_基本信息员工"].AsEnumerable().Where(p => p.DataRowToDecimal("SexCode") == 1).ToList());

                // 团体全体人员汇总
                inputTemplate.SetAllResults(ds.Tables["团体全体人员汇总"]);

                inputTemplate.SetTable(ds.Tables["职业健康检查项目"]);
                inputTemplate.SetTable(ds.Tables["时间"]);
                inputTemplate.SetTable(ds.Tables["按任务分组统计"]);
                inputTemplate.SetTable(ds.Tables["按危害因素统计"]);
                inputTemplate.SetOrgSuggestion(ds.Tables["职业健康检查汇总结果处理意见"]);
                inputTemplate.SetOccuHM(new OccHMInfo(ds.Tables["职检基本信息"]));
                inputTemplate.SetTable(ds.Tables["疾病分类"]);
                inputTemplate.SetTable(ds.Tables["人员列表"]);
                inputTemplate.SetTable(ds.Tables["职检查结论人数"]);
                inputTemplate.SetTable(ds.Tables["危害因素团体"]);
                inputTemplate.SetTable(ds.Tables["工种构成"]);
                inputTemplate.SetTable(ds.Tables["职检结论汇总(按人汇总）"]);
                inputTemplate.SetTable(ds.Tables["职业健康体检对象"]);
                inputTemplate.SetTable(ds.Tables["职业健康体检对象按分组汇总"]);

                File.Delete("./Template2/OutputDocument.docx");
                inputTemplate.FillData(Path.GetFullPath("./Template2/InputTemplate2.docx"), Path.GetFullPath("./Template2/OutputDocument.docx"));
            }
        }
    }
}
